﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Wimm.Common.Entities;
using Wimm.Common.Interfaces.Utils;

namespace Wimm.Common.Interfaces.Services
{
    public interface IIncomeService
    {
        Task<IEnumerable<IncomeSource>> LoadSources(int? parentId);
        Task<IReadOnlyDictionary<int, Icon>> LoadSourceIcons();
        Task<IPagedResult<Income>> LoadPaged(IPagedRequest<Income> request);
        Task<Income> InsertIncome(Income newIncome);
        Task<Income> EditIncome(Income income);
        Task<IEnumerable<Tuple<int, int, int, string>>> LoadCategories();

        Task<IEnumerable<KeyValuePair<IncomeSource, decimal>>> LoadIncomeGroups(DateTime? from, DateTime? to, int userId, bool detailed);
        Task<DateTime> GetLimitDate(bool isMaxDate);
    }
}
